package org.example.myleet.p667;

public class Solution {
    /**
     * 【脑筋急转弯】从普通情况归纳出规律
     * 假设n=9，k=1、2、3...8
     * 可以从k=1开始，比较容易想到的是：
     * 1、2、3、4、5、6、7、8、9
     * 如果k=2，一种比较容易翻转的思路是：
     * 2、1、3、4、5、6、7、8、9
     * 如果k=3，发现如果1继续往右交换就可以符合，可以是：
     * 2、3、1、4、5、6、7、8、9
     * 如果k=4，则发现除了1继续往右交换，还需要将2也进行往右交换，即：
     * 3、2、4、1、5、6、7、8、9
     * 直到k=8，得到：
     * 5、4、6、3、7、2、8、1、9
     * 规律就是：
     * 1、数字1在第k-1位
     * 2、从数字1的位置开始向左间隔1个位置填2、3、4...，直到第0个位置
     * 3、剩下的数字从数组末尾向左边逐个递减将空位填满即可
     */
    public int[] constructArray(int n, int k) {
        int[] res = new int[n];
        int i = k - 1, num = 1;
        while (i >= 0) {
            res[i] = num;
            i -= 2;
            ++num;
        }
        i = n - 1;
        num = n;
        while (i >= 0) {
            if (res[i] <= 0) {
                res[i] = num;
                --num;
            }
            --i;
        }
        return res;
    }
}
